﻿2026-05-14T10:51:03.4035878Z ##[group]Run pnpm --filter @rebno/client test:e2e
2026-05-14T10:51:03.4036587Z [36;1mpnpm --filter @rebno/client test:e2e[0m
2026-05-14T10:51:03.4073435Z shell: /usr/bin/bash -e {0}
2026-05-14T10:51:03.4073856Z env:
2026-05-14T10:51:03.4074293Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-14T10:51:03.4074955Z   STAGING_URL: https://staging.rebno.decidel.com
2026-05-14T10:51:03.4075890Z   STAGING_INVITE_TOKEN: ***
2026-05-14T10:51:03.4076676Z   UAT_ACCOUNT_A: ***
2026-05-14T10:51:03.4077168Z   UAT_PASSWORD_A: ***
2026-05-14T10:51:03.4077573Z   UAT_ACCOUNT_B: ***
2026-05-14T10:51:03.4078059Z   UAT_PASSWORD_B: ***
2026-05-14T10:51:03.4078441Z ##[endgroup]
2026-05-14T10:51:03.7460279Z 
2026-05-14T10:51:03.7461680Z > @rebno/client@0.1.0 test:e2e /home/runner/work/rebno/rebno/apps/client
2026-05-14T10:51:03.7462622Z > playwright test
2026-05-14T10:51:03.7463001Z 
2026-05-14T10:51:05.1188162Z 
2026-05-14T10:51:05.1189064Z Running 28 tests using 1 worker
2026-05-14T10:51:05.1189727Z 
2026-05-14T10:51:15.1971729Z   ✘   1 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (8.7s)
2026-05-14T10:51:25.2587232Z   ✘   2 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (retry #1) (8.7s)
2026-05-14T10:51:41.9183430Z   ✘   3 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (14.4s)
2026-05-14T10:51:59.6467538Z   ✘   4 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (retry #1) (15.5s)
2026-05-14T10:52:07.7423752Z   ✘   5 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (6.8s)
2026-05-14T10:52:15.7287329Z   ✘   6 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (retry #1) (6.7s)
2026-05-14T10:52:43.3553020Z   ✘   7 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (25.9s)
2026-05-14T10:53:11.4433948Z   ✘   8 [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene (retry #1) (26.6s)
2026-05-14T10:53:21.4151472Z   ✘   9 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall (8.7s)
2026-05-14T10:53:31.4599519Z   ✘  10 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall (retry #1) (8.8s)
2026-05-14T10:53:41.5813360Z   ✘  11 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall (8.9s)
2026-05-14T10:53:52.1088009Z   ✘  12 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall (retry #1) (9.2s)
2026-05-14T10:54:02.3884942Z   ✘  13 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall (9.0s)
2026-05-14T10:54:12.6210021Z   ✘  14 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall (retry #1) (8.9s)
2026-05-14T10:54:22.8052184Z   ✘  15 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (8.9s)
2026-05-14T10:54:33.1753302Z   ✘  16 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall (retry #1) (9.1s)
2026-05-14T10:54:50.3235019Z   ✘  17 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (15.1s)
2026-05-14T10:55:07.3849618Z   ✘  18 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (retry #1) (15.0s)
2026-05-14T10:55:12.4643948Z   ✓  19 [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:30:1 › nameplate sits above sprite top (D-45) (4.3s)
2026-05-14T10:55:24.4721332Z   ✓  20 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (11.9s)
2026-05-14T10:55:42.2358760Z   ✘  21 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (17.4s)
2026-05-14T10:56:05.2979295Z   ✘  22 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (retry #1) (20.7s)
2026-05-14T10:56:24.2424925Z   ✘  23 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (17.1s)
2026-05-14T10:56:44.2054204Z   ✘  24 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (retry #1) (17.9s)
2026-05-14T10:56:52.2561617Z   ✘  25 [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (7.0s)
2026-05-14T10:57:00.0891642Z   ✘  26 [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (retry #1) (6.8s)
2026-05-14T10:57:02.4463197Z   ✓  27 [chromium] › test/e2e/login-contrast.e2e.test.ts:64:3 › LoginScene contrast › heading has ≥ 4.5:1 contrast ratio on #0A0E1A background (1.6s)
2026-05-14T10:57:03.9469078Z   ✓  28 [chromium] › test/e2e/login-contrast.e2e.test.ts:72:3 › LoginScene contrast › username label has ≥ 4.5:1 contrast ratio (1.5s)
2026-05-14T10:57:05.4013593Z   ✓  29 [chromium] › test/e2e/login-contrast.e2e.test.ts:78:3 › LoginScene contrast › password label has ≥ 4.5:1 contrast ratio (1.4s)
2026-05-14T10:57:06.9659494Z   ✓  30 [chromium] › test/e2e/login-contrast.e2e.test.ts:84:3 › LoginScene contrast › username input text has ≥ 4.5:1 contrast ratio (1.5s)
2026-05-14T10:57:08.4401468Z   ✓  31 [chromium] › test/e2e/login-contrast.e2e.test.ts:90:3 › LoginScene contrast › password input text has ≥ 4.5:1 contrast ratio (1.4s)
2026-05-14T10:57:09.8321472Z   ✓  32 [chromium] › test/e2e/login-contrast.e2e.test.ts:96:3 › LoginScene contrast › submit CTA button text has ≥ 4.5:1 contrast ratio (1.4s)
2026-05-14T10:57:11.2309692Z   ✓  33 [chromium] › test/e2e/login-contrast.e2e.test.ts:104:3 › LoginScene contrast › focused input border-color is accent #22D3EE (rgb 34,211,238) (1.4s)
2026-05-14T10:57:21.7985805Z   ✘  34 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (10.1s)
2026-05-14T10:57:33.0901918Z   ✘  35 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (retry #1) (10.1s)
2026-05-14T10:57:38.6868515Z   ✓  36 [chromium] › test/e2e/logout.e2e.test.ts:51:3 › Esc menu › canvas click opens menu (D-24 secondary trigger) (4.8s)
2026-05-14T10:57:44.1549850Z   ✓  37 [chromium] › test/e2e/logout.e2e.test.ts:69:3 › Esc menu › Resume closes menu and re-engages movement without navigating (5.4s)
2026-05-14T10:57:49.7665559Z   ✘  38 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (5.2s)
2026-05-14T10:58:08.8349573Z   ✘  39 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (retry #1) (18.0s)
2026-05-14T10:58:13.5855885Z   ✓  40 [chromium] › test/e2e/sprite-state.e2e.test.ts:48:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate DOM mirror is visible for self (count >= 1) (4.0s)
2026-05-14T10:58:17.5684076Z   ✓  41 [chromium] › test/e2e/sprite-state.e2e.test.ts:61:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate text content matches logged-in username (4.0s)
2026-05-14T10:58:25.8927220Z   ✓  42 [chromium] › test/e2e/ws-kill-reconnect.e2e.test.ts:16:1 › WS-kill: login → kill WS → SDK reconnects within grace → canvas still truthy + chat round-trips (8.3s)
2026-05-14T10:58:25.9622541Z 
2026-05-14T10:58:25.9622673Z 
2026-05-14T10:58:25.9652900Z   1) [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-14T10:58:25.9653908Z 
2026-05-14T10:58:25.9654217Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-14T10:58:25.9654599Z 
2026-05-14T10:58:25.9655366Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9655885Z 
2026-05-14T10:58:25.9656053Z     Expected: >= [32m8[39m
2026-05-14T10:58:25.9656389Z     Received:    [31m0[39m
2026-05-14T10:58:25.9656539Z 
2026-05-14T10:58:25.9656636Z       80 |     cameraDelta,
2026-05-14T10:58:25.9657181Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-14T10:58:25.9657728Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-14T10:58:25.9657996Z          |     ^
2026-05-14T10:58:25.9658207Z       83 |
2026-05-14T10:58:25.9658559Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-14T10:58:25.9659073Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-14T10:58:25.9659651Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-14T10:58:25.9659998Z 
2026-05-14T10:58:25.9660398Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9661401Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/test-failed-1.png
2026-05-14T10:58:25.9662221Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9662511Z 
2026-05-14T10:58:25.9662881Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9663559Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/video.webm
2026-05-14T10:58:25.9664323Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9664601Z 
2026-05-14T10:58:25.9665052Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/error-context.md
2026-05-14T10:58:25.9665530Z 
2026-05-14T10:58:25.9665921Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9666608Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-14T10:58:25.9667375Z     Usage:
2026-05-14T10:58:25.9667489Z 
2026-05-14T10:58:25.9667984Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-14T10:58:25.9668505Z 
2026-05-14T10:58:25.9668855Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9669306Z 
2026-05-14T10:58:25.9669652Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9669936Z 
2026-05-14T10:58:25.9670124Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-14T10:58:25.9670365Z 
2026-05-14T10:58:25.9670789Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9673395Z 
2026-05-14T10:58:25.9673719Z     Expected: >= [32m8[39m
2026-05-14T10:58:25.9674266Z     Received:    [31m0[39m
2026-05-14T10:58:25.9674542Z 
2026-05-14T10:58:25.9674705Z       80 |     cameraDelta,
2026-05-14T10:58:25.9675675Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-14T10:58:25.9676668Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-14T10:58:25.9677143Z          |     ^
2026-05-14T10:58:25.9677480Z       83 |
2026-05-14T10:58:25.9678121Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-14T10:58:25.9679077Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-14T10:58:25.9680120Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-14T10:58:25.9681173Z 
2026-05-14T10:58:25.9681971Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9683360Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/test-failed-1.png
2026-05-14T10:58:25.9684953Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9685635Z 
2026-05-14T10:58:25.9686397Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9687750Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/video.webm
2026-05-14T10:58:25.9689348Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9689874Z 
2026-05-14T10:58:25.9690727Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/error-context.md
2026-05-14T10:58:25.9708347Z 
2026-05-14T10:58:25.9731313Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9732228Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-14T10:58:25.9733022Z     Usage:
2026-05-14T10:58:25.9733147Z 
2026-05-14T10:58:25.9733697Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-14T10:58:25.9734267Z 
2026-05-14T10:58:25.9734674Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9735135Z 
2026-05-14T10:58:25.9735807Z   2) [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-14T10:58:25.9736351Z 
2026-05-14T10:58:25.9738401Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-14T10:58:25.9739981Z 
2026-05-14T10:58:25.9740401Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9740790Z 
2026-05-14T10:58:25.9741285Z     Expected: >= [32m3[39m
2026-05-14T10:58:25.9741843Z     Received:    [31m1[39m
2026-05-14T10:58:25.9742129Z 
2026-05-14T10:58:25.9742289Z       67 |     unique.size,
2026-05-14T10:58:25.9743461Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-14T10:58:25.9744496Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T10:58:25.9745000Z          |     ^
2026-05-14T10:58:25.9745357Z       70 |
2026-05-14T10:58:25.9746062Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-14T10:58:25.9747002Z       72 |   for (const f of unique) {
2026-05-14T10:58:25.9748139Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-14T10:58:25.9766252Z 
2026-05-14T10:58:25.9767145Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9768488Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T10:58:25.9770022Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9770589Z 
2026-05-14T10:58:25.9771730Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9773017Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/video.webm
2026-05-14T10:58:25.9774523Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9775130Z 
2026-05-14T10:58:25.9775970Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T10:58:25.9776892Z 
2026-05-14T10:58:25.9777665Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9778984Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T10:58:25.9780159Z     Usage:
2026-05-14T10:58:25.9780372Z 
2026-05-14T10:58:25.9781951Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T10:58:25.9782969Z 
2026-05-14T10:58:25.9783747Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9784320Z 
2026-05-14T10:58:25.9785063Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9785907Z 
2026-05-14T10:58:25.9789695Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-14T10:58:25.9793071Z 
2026-05-14T10:58:25.9793985Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9794741Z 
2026-05-14T10:58:25.9795040Z     Expected: >= [32m3[39m
2026-05-14T10:58:25.9795586Z     Received:    [31m1[39m
2026-05-14T10:58:25.9795870Z 
2026-05-14T10:58:25.9796048Z       67 |     unique.size,
2026-05-14T10:58:25.9797244Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-14T10:58:25.9798299Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T10:58:25.9798805Z          |     ^
2026-05-14T10:58:25.9799173Z       70 |
2026-05-14T10:58:25.9799792Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-14T10:58:25.9800531Z       72 |   for (const f of unique) {
2026-05-14T10:58:25.9801694Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-14T10:58:25.9802351Z 
2026-05-14T10:58:25.9803182Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9804646Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T10:58:25.9806230Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9806847Z 
2026-05-14T10:58:25.9807625Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9808957Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-14T10:58:25.9810519Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9811335Z 
2026-05-14T10:58:25.9812225Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T10:58:25.9813478Z 
2026-05-14T10:58:25.9814305Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9815675Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T10:58:25.9816559Z     Usage:
2026-05-14T10:58:25.9816739Z 
2026-05-14T10:58:25.9817632Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T10:58:25.9818917Z 
2026-05-14T10:58:25.9819675Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9820232Z 
2026-05-14T10:58:25.9821652Z   3) [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-14T10:58:25.9822627Z 
2026-05-14T10:58:25.9823005Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-14T10:58:25.9823512Z 
2026-05-14T10:58:25.9824301Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9824963Z 
2026-05-14T10:58:25.9825230Z     Expected: > [32m15[39m
2026-05-14T10:58:25.9825736Z     Received:   [31m0[39m
2026-05-14T10:58:25.9825972Z 
2026-05-14T10:58:25.9826240Z       83 |     (after as number) - (before as number),
2026-05-14T10:58:25.9827004Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-14T10:58:25.9829053Z     > 85 |   ).toBeGreaterThan(15);
2026-05-14T10:58:25.9829689Z          |     ^
2026-05-14T10:58:25.9830043Z       86 | });
2026-05-14T10:58:25.9830380Z       87 |
2026-05-14T10:58:25.9831491Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-14T10:58:25.9832136Z 
2026-05-14T10:58:25.9832963Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9834317Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T10:58:25.9835820Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9836367Z 
2026-05-14T10:58:25.9837152Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9838421Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/video.webm
2026-05-14T10:58:25.9839946Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9840451Z 
2026-05-14T10:58:25.9841575Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T10:58:25.9842470Z 
2026-05-14T10:58:25.9843291Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9844720Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T10:58:25.9845490Z     Usage:
2026-05-14T10:58:25.9845650Z 
2026-05-14T10:58:25.9846403Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T10:58:25.9847179Z 
2026-05-14T10:58:25.9847751Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9848485Z 
2026-05-14T10:58:25.9849184Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9849723Z 
2026-05-14T10:58:25.9850078Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-14T10:58:25.9850538Z 
2026-05-14T10:58:25.9851548Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9852263Z 
2026-05-14T10:58:25.9852553Z     Expected: > [32m15[39m
2026-05-14T10:58:25.9853033Z     Received:   [31m0[39m
2026-05-14T10:58:25.9853292Z 
2026-05-14T10:58:25.9853563Z       83 |     (after as number) - (before as number),
2026-05-14T10:58:25.9854320Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-14T10:58:25.9855012Z     > 85 |   ).toBeGreaterThan(15);
2026-05-14T10:58:25.9855438Z          |     ^
2026-05-14T10:58:25.9855771Z       86 | });
2026-05-14T10:58:25.9856086Z       87 |
2026-05-14T10:58:25.9856773Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-14T10:58:25.9857380Z 
2026-05-14T10:58:25.9858104Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9859440Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T10:58:25.9861150Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9861715Z 
2026-05-14T10:58:25.9862418Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9863706Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-14T10:58:25.9865106Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9865627Z 
2026-05-14T10:58:25.9866464Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T10:58:25.9867584Z 
2026-05-14T10:58:25.9868292Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9869602Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T10:58:25.9870493Z     Usage:
2026-05-14T10:58:25.9871077Z 
2026-05-14T10:58:25.9872042Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T10:58:25.9873004Z 
2026-05-14T10:58:25.9873656Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9874160Z 
2026-05-14T10:58:25.9875479Z   4) [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-14T10:58:25.9876600Z 
2026-05-14T10:58:25.9877217Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T10:58:25.9877803Z 
2026-05-14T10:58:25.9878101Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T10:58:25.9878619Z     Expected: visible
2026-05-14T10:58:25.9878980Z     Timeout: 15000ms
2026-05-14T10:58:25.9879377Z     Error: element(s) not found
2026-05-14T10:58:25.9879658Z 
2026-05-14T10:58:25.9879788Z     Call log:
2026-05-14T10:58:25.9880338Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T10:58:25.9881397Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T10:58:25.9881872Z 
2026-05-14T10:58:25.9881882Z 
2026-05-14T10:58:25.9882037Z        at fixtures.ts:172
2026-05-14T10:58:25.9882279Z 
2026-05-14T10:58:25.9882412Z       170 |  */
2026-05-14T10:58:25.9883020Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T10:58:25.9883993Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T10:58:25.9884806Z           |                                                                ^
2026-05-14T10:58:25.9885344Z       173 |     timeout: 15_000,
2026-05-14T10:58:25.9885731Z       174 |   });
2026-05-14T10:58:25.9886044Z       175 | }
2026-05-14T10:58:25.9886793Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T10:58:25.9887976Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:32:13
2026-05-14T10:58:25.9888596Z 
2026-05-14T10:58:25.9889299Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9890549Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-1.png
2026-05-14T10:58:25.9892087Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9892611Z 
2026-05-14T10:58:25.9893291Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9894573Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/test-failed-2.png
2026-05-14T10:58:25.9895946Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9896653Z 
2026-05-14T10:58:25.9897432Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/error-context.md
2026-05-14T10:58:25.9898260Z 
2026-05-14T10:58:25.9898963Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9900155Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-14T10:58:25.9901156Z     Usage:
2026-05-14T10:58:25.9901334Z 
2026-05-14T10:58:25.9902195Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium/trace.zip
2026-05-14T10:58:25.9903361Z 
2026-05-14T10:58:25.9904000Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9904505Z 
2026-05-14T10:58:25.9905130Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9905661Z 
2026-05-14T10:58:25.9906336Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T10:58:25.9906899Z 
2026-05-14T10:58:25.9907102Z     Locator: locator('#username')
2026-05-14T10:58:25.9907522Z     Expected: visible
2026-05-14T10:58:25.9907875Z     Timeout: 15000ms
2026-05-14T10:58:25.9908267Z     Error: element(s) not found
2026-05-14T10:58:25.9908523Z 
2026-05-14T10:58:25.9908660Z     Call log:
2026-05-14T10:58:25.9909225Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T10:58:25.9909922Z     [2m  - waiting for locator('#username')[22m
2026-05-14T10:58:25.9910284Z 
2026-05-14T10:58:25.9910294Z 
2026-05-14T10:58:25.9911036Z       37 |       // SOURCE: GameScene.ts onForceReset transitions to LoginScene with an eviction banner.
2026-05-14T10:58:25.9912149Z       38 |       // The force_reset s2c event causes A1 to leave the room and start LoginScene.
2026-05-14T10:58:25.9913170Z     > 39 |       await expect(pageA1.locator('#username')).toBeVisible({ timeout: 15_000 });
2026-05-14T10:58:25.9913975Z          |                                                 ^
2026-05-14T10:58:25.9914454Z       40 |     } finally {
2026-05-14T10:58:25.9914880Z       41 |       await ctxA1.close();
2026-05-14T10:58:25.9915366Z       42 |       await ctxA2.close();
2026-05-14T10:58:25.9916194Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-dup-login.e2e.test.ts:39:49
2026-05-14T10:58:25.9916820Z 
2026-05-14T10:58:25.9917535Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9918880Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-1.png
2026-05-14T10:58:25.9920338Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9921014Z 
2026-05-14T10:58:25.9921738Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9923298Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/test-failed-2.png
2026-05-14T10:58:25.9924754Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9925253Z 
2026-05-14T10:58:25.9926089Z     Error Context: test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/error-context.md
2026-05-14T10:58:25.9926977Z 
2026-05-14T10:58:25.9927687Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9929142Z     test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-14T10:58:25.9930027Z     Usage:
2026-05-14T10:58:25.9930218Z 
2026-05-14T10:58:25.9931326Z         pnpm exec playwright show-trace test-results/cli-08-dup-login.e2e-D-51--ce872-irst-tab-reaches-LoginScene-chromium-retry1/trace.zip
2026-05-14T10:58:25.9932266Z 
2026-05-14T10:58:25.9932835Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9933282Z 
2026-05-14T10:58:25.9933968Z   5) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall 
2026-05-14T10:58:25.9934580Z 
2026-05-14T10:58:25.9935184Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeLessThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9935725Z 
2026-05-14T10:58:25.9935916Z     Expected: < [32m800[39m
2026-05-14T10:58:25.9936331Z     Received:   [31m920[39m
2026-05-14T10:58:25.9936547Z 
2026-05-14T10:58:25.9936847Z       73 |       // SOURCE: tile_h=40, height_tiles=20 -> room_height=800.
2026-05-14T10:58:25.9937610Z       74 |       // NAVI_MASK.bottom=-2, so the feet bbox is blocked before entering row 19.
2026-05-14T10:58:25.9938270Z     > 75 |       expect(value).toBeLessThan(800);
2026-05-14T10:58:25.9938706Z          |                     ^
2026-05-14T10:58:25.9939054Z       76 |     },
2026-05-14T10:58:25.9939325Z       77 |   },
2026-05-14T10:58:25.9939595Z       78 |   {
2026-05-14T10:58:25.9940418Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:75:21)
2026-05-14T10:58:25.9941864Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:25.9942454Z 
2026-05-14T10:58:25.9943061Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9944177Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/test-failed-1.png
2026-05-14T10:58:25.9945376Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9945821Z 
2026-05-14T10:58:25.9946395Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9947631Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/video.webm
2026-05-14T10:58:25.9948787Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9949225Z 
2026-05-14T10:58:25.9949899Z     Error Context: test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/error-context.md
2026-05-14T10:58:25.9950629Z 
2026-05-14T10:58:25.9951404Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9952642Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/trace.zip
2026-05-14T10:58:25.9953366Z     Usage:
2026-05-14T10:58:25.9953523Z 
2026-05-14T10:58:25.9954265Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium/trace.zip
2026-05-14T10:58:25.9955068Z 
2026-05-14T10:58:25.9955613Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9956075Z 
2026-05-14T10:58:25.9956618Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9957060Z 
2026-05-14T10:58:25.9957659Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeLessThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9958203Z 
2026-05-14T10:58:25.9958388Z     Expected: < [32m800[39m
2026-05-14T10:58:25.9958783Z     Received:   [31m920[39m
2026-05-14T10:58:25.9958998Z 
2026-05-14T10:58:25.9959314Z       73 |       // SOURCE: tile_h=40, height_tiles=20 -> room_height=800.
2026-05-14T10:58:25.9960068Z       74 |       // NAVI_MASK.bottom=-2, so the feet bbox is blocked before entering row 19.
2026-05-14T10:58:25.9960731Z     > 75 |       expect(value).toBeLessThan(800);
2026-05-14T10:58:25.9961374Z          |                     ^
2026-05-14T10:58:25.9961709Z       76 |     },
2026-05-14T10:58:25.9961982Z       77 |   },
2026-05-14T10:58:25.9962270Z       78 |   {
2026-05-14T10:58:25.9963105Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:75:21)
2026-05-14T10:58:25.9964332Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:25.9964922Z 
2026-05-14T10:58:25.9965519Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9966685Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium-retry1/test-failed-1.png
2026-05-14T10:58:25.9967953Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9968400Z 
2026-05-14T10:58:25.9968976Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9970064Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium-retry1/video.webm
2026-05-14T10:58:25.9971634Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9972081Z 
2026-05-14T10:58:25.9972819Z     Error Context: test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium-retry1/error-context.md
2026-05-14T10:58:25.9973604Z 
2026-05-14T10:58:25.9974201Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:25.9975303Z     test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium-retry1/trace.zip
2026-05-14T10:58:25.9976261Z     Usage:
2026-05-14T10:58:25.9976471Z 
2026-05-14T10:58:25.9977277Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-090ae-render-and-block-south-wall-chromium-retry1/trace.zip
2026-05-14T10:58:25.9978130Z 
2026-05-14T10:58:25.9978672Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9979133Z 
2026-05-14T10:58:25.9979856Z   6) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall 
2026-05-14T10:58:25.9980569Z 
2026-05-14T10:58:25.9981655Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:25.9982318Z 
2026-05-14T10:58:25.9982545Z     Expected: > [32m40[39m
2026-05-14T10:58:25.9982988Z     Received:   [31m0[39m
2026-05-14T10:58:25.9983229Z 
2026-05-14T10:58:25.9983606Z       84 |       // SOURCE: row 0 is wall; first walkable row starts at y=40.
2026-05-14T10:58:25.9984510Z       85 |       // NAVI_MASK.top=-8 keeps the feet bbox from entering the top wall row.
2026-05-14T10:58:25.9985277Z     > 86 |       expect(value).toBeGreaterThan(40);
2026-05-14T10:58:25.9985852Z          |                     ^
2026-05-14T10:58:25.9986504Z       87 |     },
2026-05-14T10:58:25.9986895Z       88 |   },
2026-05-14T10:58:25.9987248Z       89 |   {
2026-05-14T10:58:25.9988234Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:86:21)
2026-05-14T10:58:25.9989650Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:25.9990347Z 
2026-05-14T10:58:25.9991242Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:25.9992786Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/test-failed-1.png
2026-05-14T10:58:25.9994191Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9994684Z 
2026-05-14T10:58:25.9995351Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9996574Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/video.webm
2026-05-14T10:58:25.9998369Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:25.9998872Z 
2026-05-14T10:58:25.9999648Z     Error Context: test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/error-context.md
2026-05-14T10:58:26.0000527Z 
2026-05-14T10:58:26.0001519Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0002804Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/trace.zip
2026-05-14T10:58:26.0003943Z     Usage:
2026-05-14T10:58:26.0004125Z 
2026-05-14T10:58:26.0004991Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium/trace.zip
2026-05-14T10:58:26.0006023Z 
2026-05-14T10:58:26.0006727Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0007222Z 
2026-05-14T10:58:26.0007876Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0008404Z 
2026-05-14T10:58:26.0009159Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0009811Z 
2026-05-14T10:58:26.0010065Z     Expected: > [32m40[39m
2026-05-14T10:58:26.0010539Z     Received:   [31m0[39m
2026-05-14T10:58:26.0010761Z 
2026-05-14T10:58:26.0011339Z       84 |       // SOURCE: row 0 is wall; first walkable row starts at y=40.
2026-05-14T10:58:26.0012119Z       85 |       // NAVI_MASK.top=-8 keeps the feet bbox from entering the top wall row.
2026-05-14T10:58:26.0012844Z     > 86 |       expect(value).toBeGreaterThan(40);
2026-05-14T10:58:26.0013345Z          |                     ^
2026-05-14T10:58:26.0013731Z       87 |     },
2026-05-14T10:58:26.0014049Z       88 |   },
2026-05-14T10:58:26.0014360Z       89 |   {
2026-05-14T10:58:26.0041590Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:86:21)
2026-05-14T10:58:26.0042961Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:26.0043559Z 
2026-05-14T10:58:26.0044238Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0045653Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0047247Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0047828Z 
2026-05-14T10:58:26.0048620Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0049931Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/video.webm
2026-05-14T10:58:26.0052016Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0052741Z 
2026-05-14T10:58:26.0053561Z     Error Context: test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/error-context.md
2026-05-14T10:58:26.0054429Z 
2026-05-14T10:58:26.0055121Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0056339Z     test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/trace.zip
2026-05-14T10:58:26.0057207Z     Usage:
2026-05-14T10:58:26.0057570Z 
2026-05-14T10:58:26.0058461Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-34b79-render-and-block-north-wall-chromium-retry1/trace.zip
2026-05-14T10:58:26.0059388Z 
2026-05-14T10:58:26.0060009Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0060494Z 
2026-05-14T10:58:26.0061489Z   7) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall 
2026-05-14T10:58:26.0062215Z 
2026-05-14T10:58:26.0062943Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0063570Z 
2026-05-14T10:58:26.0063771Z     Expected: > [32m44[39m
2026-05-14T10:58:26.0064209Z     Received:   [31m0[39m
2026-05-14T10:58:26.0064451Z 
2026-05-14T10:58:26.0064777Z        95 |       // SOURCE: tile_w=44; first walkable col starts at x=44.
2026-05-14T10:58:26.0065624Z        96 |       // NAVI_MASK.left=-9 keeps the feet bbox from entering the west wall col.
2026-05-14T10:58:26.0066392Z     >  97 |       expect(value).toBeGreaterThan(44);
2026-05-14T10:58:26.0066898Z           |                     ^
2026-05-14T10:58:26.0067273Z        98 |     },
2026-05-14T10:58:26.0067588Z        99 |   },
2026-05-14T10:58:26.0067893Z       100 |   {
2026-05-14T10:58:26.0068813Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:97:21)
2026-05-14T10:58:26.0070161Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:26.0070799Z 
2026-05-14T10:58:26.0091755Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0093003Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/test-failed-1.png
2026-05-14T10:58:26.0094324Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0094826Z 
2026-05-14T10:58:26.0095467Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0096598Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/video.webm
2026-05-14T10:58:26.0097856Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0098538Z 
2026-05-14T10:58:26.0099268Z     Error Context: test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/error-context.md
2026-05-14T10:58:26.0100053Z 
2026-05-14T10:58:26.0100730Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0102069Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/trace.zip
2026-05-14T10:58:26.0102869Z     Usage:
2026-05-14T10:58:26.0103043Z 
2026-05-14T10:58:26.0104090Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium/trace.zip
2026-05-14T10:58:26.0104989Z 
2026-05-14T10:58:26.0105720Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0106216Z 
2026-05-14T10:58:26.0106855Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0107385Z 
2026-05-14T10:58:26.0108114Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0108771Z 
2026-05-14T10:58:26.0108978Z     Expected: > [32m44[39m
2026-05-14T10:58:26.0109431Z     Received:   [31m0[39m
2026-05-14T10:58:26.0109679Z 
2026-05-14T10:58:26.0110008Z        95 |       // SOURCE: tile_w=44; first walkable col starts at x=44.
2026-05-14T10:58:26.0131065Z        96 |       // NAVI_MASK.left=-9 keeps the feet bbox from entering the west wall col.
2026-05-14T10:58:26.0131889Z     >  97 |       expect(value).toBeGreaterThan(44);
2026-05-14T10:58:26.0132402Z           |                     ^
2026-05-14T10:58:26.0132780Z        98 |     },
2026-05-14T10:58:26.0133096Z        99 |   },
2026-05-14T10:58:26.0133403Z       100 |   {
2026-05-14T10:58:26.0134325Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:97:21)
2026-05-14T10:58:26.0135698Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:26.0136335Z 
2026-05-14T10:58:26.0137048Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0138336Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0139759Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0140261Z 
2026-05-14T10:58:26.0141065Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0142271Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/video.webm
2026-05-14T10:58:26.0143590Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0144065Z 
2026-05-14T10:58:26.0145078Z     Error Context: test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/error-context.md
2026-05-14T10:58:26.0145934Z 
2026-05-14T10:58:26.0146614Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0147848Z     test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/trace.zip
2026-05-14T10:58:26.0148706Z     Usage:
2026-05-14T10:58:26.0148876Z 
2026-05-14T10:58:26.0149767Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-a77a2--render-and-block-west-wall-chromium-retry1/trace.zip
2026-05-14T10:58:26.0171118Z 
2026-05-14T10:58:26.0171810Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0172318Z 
2026-05-14T10:58:26.0173098Z   8) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-14T10:58:26.0173797Z 
2026-05-14T10:58:26.0174482Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeLessThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0175091Z 
2026-05-14T10:58:26.0175296Z     Expected: < [32m836[39m
2026-05-14T10:58:26.0175746Z     Received:   [31m968[39m
2026-05-14T10:58:26.0175997Z 
2026-05-14T10:58:26.0176318Z       106 |       // SOURCE: tile_w=44, width_tiles=20 -> room_width=880.
2026-05-14T10:58:26.0176976Z       107 |       // Last walkable col ends before x=836.
2026-05-14T10:58:26.0177551Z     > 108 |       expect(value).toBeLessThan(836);
2026-05-14T10:58:26.0178069Z           |                     ^
2026-05-14T10:58:26.0178443Z       109 |     },
2026-05-14T10:58:26.0178754Z       110 |   },
2026-05-14T10:58:26.0179083Z       111 | ] as const;
2026-05-14T10:58:26.0180041Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:108:21)
2026-05-14T10:58:26.0181584Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:26.0182241Z 
2026-05-14T10:58:26.0182923Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0184147Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/test-failed-1.png
2026-05-14T10:58:26.0185503Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0185987Z 
2026-05-14T10:58:26.0186670Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0187809Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/video.webm
2026-05-14T10:58:26.0189105Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0189586Z 
2026-05-14T10:58:26.0190344Z     Error Context: test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/error-context.md
2026-05-14T10:58:26.0211659Z 
2026-05-14T10:58:26.0212407Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0213619Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-14T10:58:26.0214432Z     Usage:
2026-05-14T10:58:26.0214605Z 
2026-05-14T10:58:26.0215446Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium/trace.zip
2026-05-14T10:58:26.0216528Z 
2026-05-14T10:58:26.0217173Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0217669Z 
2026-05-14T10:58:26.0218292Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0218751Z 
2026-05-14T10:58:26.0219381Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeLessThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0219982Z 
2026-05-14T10:58:26.0220181Z     Expected: < [32m836[39m
2026-05-14T10:58:26.0220618Z     Received:   [31m952[39m
2026-05-14T10:58:26.0221038Z 
2026-05-14T10:58:26.0221364Z       106 |       // SOURCE: tile_w=44, width_tiles=20 -> room_width=880.
2026-05-14T10:58:26.0222022Z       107 |       // Last walkable col ends before x=836.
2026-05-14T10:58:26.0222604Z     > 108 |       expect(value).toBeLessThan(836);
2026-05-14T10:58:26.0223113Z           |                     ^
2026-05-14T10:58:26.0223524Z       109 |     },
2026-05-14T10:58:26.0223834Z       110 |   },
2026-05-14T10:58:26.0224149Z       111 | ] as const;
2026-05-14T10:58:26.0225120Z         at Object.assertBlocked (/home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:108:21)
2026-05-14T10:58:26.0226481Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:130:10
2026-05-14T10:58:26.0227133Z 
2026-05-14T10:58:26.0227830Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0229116Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0230545Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0251267Z 
2026-05-14T10:58:26.0251972Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0253202Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/video.webm
2026-05-14T10:58:26.0254534Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0255034Z 
2026-05-14T10:58:26.0255861Z     Error Context: test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/error-context.md
2026-05-14T10:58:26.0256912Z 
2026-05-14T10:58:26.0257591Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0258798Z     test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/trace.zip
2026-05-14T10:58:26.0259639Z     Usage:
2026-05-14T10:58:26.0259810Z 
2026-05-14T10:58:26.0260706Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-e24e8--render-and-block-east-wall-chromium-retry1/trace.zip
2026-05-14T10:58:26.0261848Z 
2026-05-14T10:58:26.0262461Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0263134Z 
2026-05-14T10:58:26.0264125Z   9) [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-14T10:58:26.0264969Z 
2026-05-14T10:58:26.0269489Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-14T10:58:26.0293136Z 
2026-05-14T10:58:26.0293874Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0294534Z 
2026-05-14T10:58:26.0294736Z     Expected: >= [32m3[39m
2026-05-14T10:58:26.0295165Z     Received:    [31m1[39m
2026-05-14T10:58:26.0295396Z 
2026-05-14T10:58:26.0295759Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-14T10:58:26.0296933Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-14T10:58:26.0297786Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T10:58:26.0298212Z          |     ^
2026-05-14T10:58:26.0298518Z       86 |
2026-05-14T10:58:26.0299319Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-14T10:58:26.0300252Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-14T10:58:26.0301431Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-14T10:58:26.0302039Z 
2026-05-14T10:58:26.0302742Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0303982Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/test-failed-1.png
2026-05-14T10:58:26.0305412Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0306116Z 
2026-05-14T10:58:26.0306791Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0307909Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/video.webm
2026-05-14T10:58:26.0309168Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0309642Z 
2026-05-14T10:58:26.0310367Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/error-context.md
2026-05-14T10:58:26.0331585Z 
2026-05-14T10:58:26.0332307Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0333478Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-14T10:58:26.0334277Z     Usage:
2026-05-14T10:58:26.0334443Z 
2026-05-14T10:58:26.0335253Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-14T10:58:26.0336092Z 
2026-05-14T10:58:26.0336703Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0337156Z 
2026-05-14T10:58:26.0337748Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0338208Z 
2026-05-14T10:58:26.0342851Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-14T10:58:26.0346153Z 
2026-05-14T10:58:26.0346866Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0347482Z 
2026-05-14T10:58:26.0347683Z     Expected: >= [32m3[39m
2026-05-14T10:58:26.0348112Z     Received:    [31m1[39m
2026-05-14T10:58:26.0348343Z 
2026-05-14T10:58:26.0348686Z       83 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-14T10:58:26.0349810Z       84 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-14T10:58:26.0350654Z     > 85 |   ).toBeGreaterThanOrEqual(3);
2026-05-14T10:58:26.0351706Z          |     ^
2026-05-14T10:58:26.0351989Z       86 |
2026-05-14T10:58:26.0352722Z       87 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-14T10:58:26.0353553Z       88 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-14T10:58:26.0354642Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:85:5
2026-05-14T10:58:26.0355188Z 
2026-05-14T10:58:26.0355794Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0356943Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0358181Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0358784Z 
2026-05-14T10:58:26.0359366Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0360432Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/video.webm
2026-05-14T10:58:26.0361834Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0362283Z 
2026-05-14T10:58:26.0363037Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/error-context.md
2026-05-14T10:58:26.0363820Z 
2026-05-14T10:58:26.0364420Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0365522Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-14T10:58:26.0366286Z     Usage:
2026-05-14T10:58:26.0366444Z 
2026-05-14T10:58:26.0367242Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-14T10:58:26.0368095Z 
2026-05-14T10:58:26.0368639Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0369079Z 
2026-05-14T10:58:26.0369937Z   10) [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-14T10:58:26.0370704Z 
2026-05-14T10:58:26.0371416Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T10:58:26.0371913Z 
2026-05-14T10:58:26.0372151Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T10:58:26.0372602Z     Expected: visible
2026-05-14T10:58:26.0372912Z     Timeout: 15000ms
2026-05-14T10:58:26.0373254Z     Error: element(s) not found
2026-05-14T10:58:26.0373488Z 
2026-05-14T10:58:26.0373600Z     Call log:
2026-05-14T10:58:26.0374088Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T10:58:26.0374819Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T10:58:26.0375210Z 
2026-05-14T10:58:26.0375218Z 
2026-05-14T10:58:26.0375345Z        at fixtures.ts:172
2026-05-14T10:58:26.0375556Z 
2026-05-14T10:58:26.0375670Z       170 |  */
2026-05-14T10:58:26.0376196Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T10:58:26.0377205Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T10:58:26.0377916Z           |                                                                ^
2026-05-14T10:58:26.0378390Z       173 |     timeout: 15_000,
2026-05-14T10:58:26.0378729Z       174 |   });
2026-05-14T10:58:26.0379001Z       175 | }
2026-05-14T10:58:26.0379651Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T10:58:26.0380644Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:32:9
2026-05-14T10:58:26.0381489Z 
2026-05-14T10:58:26.0382102Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0383196Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-14T10:58:26.0384376Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0384834Z 
2026-05-14T10:58:26.0385402Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0386420Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/video.webm
2026-05-14T10:58:26.0387552Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0387990Z 
2026-05-14T10:58:26.0388642Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-14T10:58:26.0389384Z 
2026-05-14T10:58:26.0389977Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0391185Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T10:58:26.0391894Z     Usage:
2026-05-14T10:58:26.0392045Z 
2026-05-14T10:58:26.0392775Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-14T10:58:26.0393577Z 
2026-05-14T10:58:26.0394125Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0394563Z 
2026-05-14T10:58:26.0395119Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0395585Z 
2026-05-14T10:58:26.0396229Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-14T10:58:26.0396981Z 
2026-05-14T10:58:26.0397667Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0398301Z 
2026-05-14T10:58:26.0398546Z     Expected: > [32m0[39m
2026-05-14T10:58:26.0399012Z     Received:   [31m0[39m
2026-05-14T10:58:26.0399257Z 
2026-05-14T10:58:26.0399399Z     Call Log:
2026-05-14T10:58:26.0399912Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-14T10:58:26.0400526Z 
2026-05-14T10:58:26.0401257Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-14T10:58:26.0402274Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-14T10:58:26.0403005Z     > 57 |   await expect
2026-05-14T10:58:26.0403516Z          |   ^
2026-05-14T10:58:26.0403933Z       58 |     .poll(
2026-05-14T10:58:26.0404396Z       59 |       async () =>
2026-05-14T10:58:26.0404879Z       60 |         page.evaluate(
2026-05-14T10:58:26.0405870Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-14T10:58:26.0406457Z 
2026-05-14T10:58:26.0407201Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0408580Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0410320Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0411017Z 
2026-05-14T10:58:26.0411714Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0412972Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-14T10:58:26.0414398Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0414898Z 
2026-05-14T10:58:26.0415944Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-14T10:58:26.0416880Z 
2026-05-14T10:58:26.0417587Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0419004Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T10:58:26.0419979Z     Usage:
2026-05-14T10:58:26.0420168Z 
2026-05-14T10:58:26.0421304Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-14T10:58:26.0422305Z 
2026-05-14T10:58:26.0422930Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0423441Z 
2026-05-14T10:58:26.0424419Z   11) [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-14T10:58:26.0425337Z 
2026-05-14T10:58:26.0426083Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0426755Z 
2026-05-14T10:58:26.0426998Z     Expected: > [32m470[39m
2026-05-14T10:58:26.0427478Z     Received:   [31m440[39m
2026-05-14T10:58:26.0427729Z 
2026-05-14T10:58:26.0429218Z       78 |       .getAttribute('data-x-coord');
2026-05-14T10:58:26.0430123Z       79 |     const afterX = Number(afterXStr ?? '0');
2026-05-14T10:58:26.0431771Z     > 80 |     expect(afterX).toBeGreaterThan(beforeX + 30); // ≥30 px movement; conservative.
2026-05-14T10:58:26.0432699Z          |                    ^
2026-05-14T10:58:26.0433096Z       81 |
2026-05-14T10:58:26.0433739Z       82 |     // (4) Chat round-trip. A presses Enter to focus chat, types, Enter to send.
2026-05-14T10:58:26.0434663Z       83 |     //     B sees a `.chat-line` matching `<sender>: <text>` within 5s.
2026-05-14T10:58:26.0435557Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:80:20
2026-05-14T10:58:26.0436354Z 
2026-05-14T10:58:26.0437115Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0438392Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-1.png
2026-05-14T10:58:26.0439881Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0440443Z 
2026-05-14T10:58:26.0441469Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0442794Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-2.png
2026-05-14T10:58:26.0444208Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0444692Z 
2026-05-14T10:58:26.0445431Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/error-context.md
2026-05-14T10:58:26.0446184Z 
2026-05-14T10:58:26.0446793Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0447822Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-14T10:58:26.0448529Z     Usage:
2026-05-14T10:58:26.0448683Z 
2026-05-14T10:58:26.0449450Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-14T10:58:26.0450273Z 
2026-05-14T10:58:26.0451201Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0451747Z 
2026-05-14T10:58:26.0452461Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0453047Z 
2026-05-14T10:58:26.0453817Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0454541Z 
2026-05-14T10:58:26.0454832Z     Expected: > [32m470[39m
2026-05-14T10:58:26.0455366Z     Received:   [31m440[39m
2026-05-14T10:58:26.0455633Z 
2026-05-14T10:58:26.0455885Z       78 |       .getAttribute('data-x-coord');
2026-05-14T10:58:26.0456488Z       79 |     const afterX = Number(afterXStr ?? '0');
2026-05-14T10:58:26.0457495Z     > 80 |     expect(afterX).toBeGreaterThan(beforeX + 30); // ≥30 px movement; conservative.
2026-05-14T10:58:26.0458482Z          |                    ^
2026-05-14T10:58:26.0458871Z       81 |
2026-05-14T10:58:26.0459494Z       82 |     // (4) Chat round-trip. A presses Enter to focus chat, types, Enter to send.
2026-05-14T10:58:26.0460386Z       83 |     //     B sees a `.chat-line` matching `<sender>: <text>` within 5s.
2026-05-14T10:58:26.0461627Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:80:20
2026-05-14T10:58:26.0462196Z 
2026-05-14T10:58:26.0463102Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0464468Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0466011Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0466512Z 
2026-05-14T10:58:26.0467249Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0468619Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-2.png
2026-05-14T10:58:26.0470078Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0470581Z 
2026-05-14T10:58:26.0471641Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/error-context.md
2026-05-14T10:58:26.0472568Z 
2026-05-14T10:58:26.0473289Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0474556Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-14T10:58:26.0475447Z     Usage:
2026-05-14T10:58:26.0475628Z 
2026-05-14T10:58:26.0476560Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-14T10:58:26.0477537Z 
2026-05-14T10:58:26.0478161Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0478665Z 
2026-05-14T10:58:26.0479670Z   12) [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-14T10:58:26.0480537Z 
2026-05-14T10:58:26.0481512Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T10:58:26.0482234Z 
2026-05-14T10:58:26.0482506Z     Expected: [32m"mvp-room"[39m
2026-05-14T10:58:26.0482988Z     Received: [31m""[39m
2026-05-14T10:58:26.0483230Z 
2026-05-14T10:58:26.0483669Z       42 |     () => (window as unknown as { __rebno?: { roomId?: string } }).__rebno?.roomId,
2026-05-14T10:58:26.0484322Z       43 |   );
2026-05-14T10:58:26.0484769Z     > 44 |   expect(postReloadRoomId).toBe('mvp-room');
2026-05-14T10:58:26.0485571Z          |                            ^
2026-05-14T10:58:26.0485975Z       45 |
2026-05-14T10:58:26.0486413Z       46 |   const loadedTextures = await page.evaluate(
2026-05-14T10:58:26.0486907Z       47 |     () =>
2026-05-14T10:58:26.0487677Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cookie-reload.e2e.test.ts:44:28
2026-05-14T10:58:26.0488280Z 
2026-05-14T10:58:26.0488988Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0490395Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/test-failed-1.png
2026-05-14T10:58:26.0492185Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0492688Z 
2026-05-14T10:58:26.0493366Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0494564Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/video.webm
2026-05-14T10:58:26.0495933Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0496427Z 
2026-05-14T10:58:26.0497233Z     Error Context: test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/error-context.md
2026-05-14T10:58:26.0498093Z 
2026-05-14T10:58:26.0498786Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0500009Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/trace.zip
2026-05-14T10:58:26.0501039Z     Usage:
2026-05-14T10:58:26.0501218Z 
2026-05-14T10:58:26.0502099Z         pnpm exec playwright show-trace test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/trace.zip
2026-05-14T10:58:26.0503042Z 
2026-05-14T10:58:26.0503657Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0504252Z 
2026-05-14T10:58:26.0504871Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0505383Z 
2026-05-14T10:58:26.0506166Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-14T10:58:26.0506861Z 
2026-05-14T10:58:26.0507152Z     Expected: [32m"mvp-room"[39m
2026-05-14T10:58:26.0507645Z     Received: [31m""[39m
2026-05-14T10:58:26.0507877Z 
2026-05-14T10:58:26.0508332Z       42 |     () => (window as unknown as { __rebno?: { roomId?: string } }).__rebno?.roomId,
2026-05-14T10:58:26.0508967Z       43 |   );
2026-05-14T10:58:26.0509423Z     > 44 |   expect(postReloadRoomId).toBe('mvp-room');
2026-05-14T10:58:26.0509966Z          |                            ^
2026-05-14T10:58:26.0510365Z       45 |
2026-05-14T10:58:26.0510973Z       46 |   const loadedTextures = await page.evaluate(
2026-05-14T10:58:26.0511779Z       47 |     () =>
2026-05-14T10:58:26.0512511Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cookie-reload.e2e.test.ts:44:28
2026-05-14T10:58:26.0513111Z 
2026-05-14T10:58:26.0513812Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0515168Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0516637Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0517313Z 
2026-05-14T10:58:26.0517982Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0519253Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/video.webm
2026-05-14T10:58:26.0520708Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0521410Z 
2026-05-14T10:58:26.0522288Z     Error Context: test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/error-context.md
2026-05-14T10:58:26.0523211Z 
2026-05-14T10:58:26.0523915Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0525201Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-14T10:58:26.0526109Z     Usage:
2026-05-14T10:58:26.0526282Z 
2026-05-14T10:58:26.0527239Z         pnpm exec playwright show-trace test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-14T10:58:26.0528258Z 
2026-05-14T10:58:26.0528872Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0529377Z 
2026-05-14T10:58:26.0530374Z   13) [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-14T10:58:26.0531476Z 
2026-05-14T10:58:26.0532101Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T10:58:26.0532671Z 
2026-05-14T10:58:26.0533011Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-14T10:58:26.0533579Z     Expected: visible
2026-05-14T10:58:26.0533942Z     Timeout: 5000ms
2026-05-14T10:58:26.0534320Z     Error: element(s) not found
2026-05-14T10:58:26.0534583Z 
2026-05-14T10:58:26.0534717Z     Call log:
2026-05-14T10:58:26.0535281Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-14T10:58:26.0536157Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-14T10:58:26.0536655Z 
2026-05-14T10:58:26.0536665Z 
2026-05-14T10:58:26.0536795Z       36 |
2026-05-14T10:58:26.0537357Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-14T10:58:26.0538364Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-14T10:58:26.0539498Z          |                                                                           ^
2026-05-14T10:58:26.0540069Z       39 |       timeout: 5_000,
2026-05-14T10:58:26.0540457Z       40 |     });
2026-05-14T10:58:26.0540768Z       41 |
2026-05-14T10:58:26.0541571Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-14T10:58:26.0542134Z 
2026-05-14T10:58:26.0542829Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0544289Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/test-failed-1.png
2026-05-14T10:58:26.0545691Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0546194Z 
2026-05-14T10:58:26.0546855Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0548076Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/video.webm
2026-05-14T10:58:26.0549427Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0549928Z 
2026-05-14T10:58:26.0550722Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/error-context.md
2026-05-14T10:58:26.0551879Z 
2026-05-14T10:58:26.0552581Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0553821Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-14T10:58:26.0554689Z     Usage:
2026-05-14T10:58:26.0554897Z 
2026-05-14T10:58:26.0555770Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-14T10:58:26.0556702Z 
2026-05-14T10:58:26.0557322Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0557839Z 
2026-05-14T10:58:26.0558461Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0558974Z 
2026-05-14T10:58:26.0559567Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T10:58:26.0560128Z 
2026-05-14T10:58:26.0560457Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-14T10:58:26.0561194Z     Expected: visible
2026-05-14T10:58:26.0561567Z     Timeout: 5000ms
2026-05-14T10:58:26.0561947Z     Error: element(s) not found
2026-05-14T10:58:26.0562211Z 
2026-05-14T10:58:26.0562343Z     Call log:
2026-05-14T10:58:26.0562890Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-14T10:58:26.0563764Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-14T10:58:26.0564252Z 
2026-05-14T10:58:26.0564261Z 
2026-05-14T10:58:26.0564587Z       36 |
2026-05-14T10:58:26.0565147Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-14T10:58:26.0566159Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-14T10:58:26.0567090Z          |                                                                           ^
2026-05-14T10:58:26.0567652Z       39 |       timeout: 5_000,
2026-05-14T10:58:26.0568037Z       40 |     });
2026-05-14T10:58:26.0568347Z       41 |
2026-05-14T10:58:26.0568965Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-14T10:58:26.0569684Z 
2026-05-14T10:58:26.0570386Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0571953Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0573424Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0573944Z 
2026-05-14T10:58:26.0574617Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0575880Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/video.webm
2026-05-14T10:58:26.0577282Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0577774Z 
2026-05-14T10:58:26.0578637Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/error-context.md
2026-05-14T10:58:26.0579566Z 
2026-05-14T10:58:26.0580259Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0581707Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-14T10:58:26.0582616Z     Usage:
2026-05-14T10:58:26.0582821Z 
2026-05-14T10:58:26.0583755Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-14T10:58:26.0584743Z 
2026-05-14T10:58:26.0585367Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0585869Z 
2026-05-14T10:58:26.0587229Z   14) [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-14T10:58:26.0588386Z 
2026-05-14T10:58:26.0589054Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoMatch[2m([22m[32mexpected[39m[2m)[22m
2026-05-14T10:58:26.0589645Z 
2026-05-14T10:58:26.0590017Z     Expected pattern: [32m/^0028-NaviRunR_\d{3}$/[39m
2026-05-14T10:58:26.0590726Z     Received string:  [31m"0000-NaviStandD_000"[39m
2026-05-14T10:58:26.0591336Z 
2026-05-14T10:58:26.0591473Z       32 |
2026-05-14T10:58:26.0592176Z       33 |     // Frame key must match Run R pattern: '0028-NaviRunR_NNN'
2026-05-14T10:58:26.0592969Z     > 34 |     expect(frameWhileRunning).toMatch(/^0028-NaviRunR_\d{3}$/);
2026-05-14T10:58:26.0593609Z          |                               ^
2026-05-14T10:58:26.0594009Z       35 |
2026-05-14T10:58:26.0594425Z       36 |     // Release right arrow and wait for stop
2026-05-14T10:58:26.0595029Z       37 |     await page.keyboard.up('ArrowRight');
2026-05-14T10:58:26.0595894Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:34:31
2026-05-14T10:58:26.0596670Z 
2026-05-14T10:58:26.0597372Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0598671Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/test-failed-1.png
2026-05-14T10:58:26.0600077Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0600599Z 
2026-05-14T10:58:26.0601454Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0602680Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/video.webm
2026-05-14T10:58:26.0604093Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0604587Z 
2026-05-14T10:58:26.0605385Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/error-context.md
2026-05-14T10:58:26.0606272Z 
2026-05-14T10:58:26.0606962Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0608177Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-14T10:58:26.0609023Z     Usage:
2026-05-14T10:58:26.0609203Z 
2026-05-14T10:58:26.0610077Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-14T10:58:26.0611311Z 
2026-05-14T10:58:26.0611945Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0612442Z 
2026-05-14T10:58:26.0613074Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0613573Z 
2026-05-14T10:58:26.0614176Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-14T10:58:26.0614749Z 
2026-05-14T10:58:26.0615032Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-14T10:58:26.0615548Z     Expected: visible
2026-05-14T10:58:26.0615929Z     Timeout: 15000ms
2026-05-14T10:58:26.0616329Z     Error: element(s) not found
2026-05-14T10:58:26.0616595Z 
2026-05-14T10:58:26.0616730Z     Call log:
2026-05-14T10:58:26.0617253Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-14T10:58:26.0618199Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-14T10:58:26.0618606Z 
2026-05-14T10:58:26.0618614Z 
2026-05-14T10:58:26.0618745Z        at fixtures.ts:172
2026-05-14T10:58:26.0618960Z 
2026-05-14T10:58:26.0619070Z       170 |  */
2026-05-14T10:58:26.0619613Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-14T10:58:26.0620469Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-14T10:58:26.0621416Z           |                                                                ^
2026-05-14T10:58:26.0622082Z       173 |     timeout: 15_000,
2026-05-14T10:58:26.0622429Z       174 |   });
2026-05-14T10:58:26.0622709Z       175 | }
2026-05-14T10:58:26.0623368Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-14T10:58:26.0624396Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:22:11
2026-05-14T10:58:26.0624939Z 
2026-05-14T10:58:26.0625561Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-14T10:58:26.0626771Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/test-failed-1.png
2026-05-14T10:58:26.0628066Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0628506Z 
2026-05-14T10:58:26.0629085Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0630322Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/video.webm
2026-05-14T10:58:26.0632057Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0632591Z 
2026-05-14T10:58:26.0633606Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/error-context.md
2026-05-14T10:58:26.0634881Z 
2026-05-14T10:58:26.0635544Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-14T10:58:26.0636820Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-14T10:58:26.0637839Z     Usage:
2026-05-14T10:58:26.0638036Z 
2026-05-14T10:58:26.0653920Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-14T10:58:26.0654847Z 
2026-05-14T10:58:26.0655491Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-14T10:58:26.0655957Z 
2026-05-14T10:58:26.0656077Z   14 failed
2026-05-14T10:58:26.0657076Z     [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-14T10:58:26.0658755Z     [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-14T10:58:26.0660687Z     [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-14T10:58:26.0662908Z     [chromium] › test/e2e/cli-08-dup-login.e2e.test.ts:11:3 › D-51 dup-login eviction › second session evicts first; second tab reaches GameScene, first tab reaches LoginScene 
2026-05-14T10:58:26.0664528Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block south wall 
2026-05-14T10:58:26.0666057Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block north wall 
2026-05-14T10:58:26.0667328Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block west wall 
2026-05-14T10:58:26.0668583Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:114:3 › floor tiles render and block east wall 
2026-05-14T10:58:26.0670061Z     [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-14T10:58:26.0671885Z     [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-14T10:58:26.0673493Z     [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-14T10:58:26.0675089Z     [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-14T10:58:26.0676723Z     [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-14T10:58:26.0678645Z     [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-14T10:58:26.0679779Z   14 passed (7.4m)
2026-05-14T10:58:26.6238539Z /home/runner/work/rebno/rebno/apps/client:
2026-05-14T10:58:26.6240288Z  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @rebno/client@0.1.0 test:e2e: `playwright test`
2026-05-14T10:58:26.6241712Z Exit status 1
2026-05-14T10:58:26.6420564Z ##[error]Process completed with exit code 1.
